The present disclosure relates to scheduling workload to be run in compute environments. Many Software as a Service (SaaS) systems support the non-real time generation of analytics reports covering large data domains (e.g. 40K network devices) and extended time periods (e.g. a quarter). With the growing need to leverage analytics (both near real-time and off-line) to enhance service value add, such report generation capabilities will increase in importance.
Off-line reports are generally scheduled and provided with a regular cadence (e.g. once a quarter), or generated on-demand (albeit with processing delay) in response to a user request. This may require analyzing large volumes of data obtained from a data lake or a structured database.
Unless there is massive overprovisioning of resources, there can be undesirable effects such as unacceptable indeterminate delays during times of peak demand which could have been avoided by prioritized schedule management. Another undesirable effect is that resources can lie fallow for long periods when they could have been used for lower priority users/jobs.
Another issue is the lack of a simple internal bookkeeping mechanism for managing subscription level or transactional pricing vs. task volume and completion delay. This has the unfortunate side-effect of the system not being able to deduce and communicate any tiered upsells (e.g. conversion from a bronze level to a silver level service) that may be needed to handle the user's task throughput needs and latency constraints.
There is a need for a method and apparatus for the automatic allocation of resources to such jobs using a simple abstraction of resource supply and resource entitlement. This should allow the free-market acquisition of resource usage, as well as a policy-based allocation of resources as compensation for past delays or failures or as a means for acquiring new customers. Simple and accurate resource bookkeeping will also facilitate customer upsells, and guide new infrastructure provisioning.